home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / admin / linuxcon.000 / linuxcon / linuxconf-1.6 / userconf / userconf.h < prev    next >
C/C++ Source or Header  |  1996-07-21  |  4KB  |  181 lines

  1. #pragma interface
  2. #ifndef USERCONF_H
  3. #define USERCONF_H
  4.  
  5. struct passwd;
  6. struct group;
  7.  
  8. class USER;
  9. class USERS;
  10. class GROUPS;
  11. class SHADOW;
  12. class DIALOG;
  13.  
  14. #include "../misc/misc.h"
  15.  
  16. class PRIVILEGE_DATA: public ARRAY_OBJ{
  17. protected:
  18.     char active;
  19.     char authenticate;
  20. public:
  21.     virtual void setdialog(DIALOG &dia)=0;
  22.     virtual int validate()=0;
  23.     virtual void format_ascii(char *line)=0;
  24.     /*~PROTOBEG~ PRIVILEGE_DATA */
  25.     /*~PROTOEND~ PRIVILEGE_DATA */
  26. };
  27.  
  28. class PRIVILEGE{
  29.     SSTRING id;        // Name of the priviledge
  30.     PRIVILEGE *next;
  31.     /*~PROTOBEG~ PRIVILEGE */
  32. public:
  33.     PRIVILEGE (const char *_id);
  34.     virtual PRIVILEGE_DATA *getdata (const char *line);
  35.     /*~PROTOEND~ PRIVILEGE */
  36. };
  37.  
  38.  
  39. class USER: public ARRAY_OBJ{
  40.     SSTRING name;
  41.     SSTRING passwd;
  42.     int uid;
  43.     int gid;
  44.     SSTRING comment;
  45.     SSTRING wrkdir;
  46.     SSTRING shell;
  47.     int special;    // Special user accounts like uucp and slip
  48.             // Whatever is using a shell for non human.
  49.     /*~PROTOBEG~ USER */
  50. public:
  51.     USER (const char *_name,
  52.          const char *_passwd,
  53.          int _uid,
  54.          int _gid,
  55.          const char *_gecos,
  56.          const char *_dir,
  57.          const char *_shell);
  58.     USER (const char *line);
  59.     USER (struct passwd *p);
  60.     USER (void);
  61. private:
  62.     int check (USERS&users, GROUPS&groups, int full);
  63. public:
  64.     int checkhome (char *status);
  65.     int edit (USERS&users, GROUPS&groups, int is_new);
  66.     int edithispass (SHADOW *shadow);
  67.     int edithispass_notty (SHADOW *shadow);
  68.     int editpass (int lock_available, SHADOW *shadow);
  69.     const char *getgecos (void);
  70.     int getgid (void);
  71.     const char *getname (void);
  72.     const char *getpwd (void);
  73.     const char *getshell (void);
  74.     int getuid (void);
  75. private:
  76.     void init (const char *_name,
  77.          const char *_passwd,
  78.          int _uid,
  79.          int _gid,
  80.          const char *_gecos,
  81.          const char *_dir,
  82.          const char *_shell);
  83. public:
  84.     int is_admin (void);
  85.     int is_like (USER *other);
  86.     int is_special (void);
  87.     int sethome (void);
  88.     void setlike (USER *other);
  89.     void setname (const char *_name);
  90. private:
  91.     void update_passwd (const char *newp,
  92.          SHADOW *shadow,
  93.          int is_lock);
  94. public:
  95.     void write (FILE *fout);
  96.     ~USER (void);
  97.     /*~PROTOEND~ USER */
  98. };
  99.  
  100. class USERS: public ARRAY{
  101.     class SHADOWS *shadows;
  102.     /*~PROTOBEG~ USERS */
  103. public:
  104.     USERS (void);
  105.     int addone (USER *special,
  106.          const char *name,
  107.          GROUPS&groups);
  108.     void addshadow (SHADOW *shadow);
  109.     int edit (USER *special);
  110.     int editpass (USER *special);
  111.     USER *getfromuid (int uid);
  112.     USER *getitem (const char *name);
  113.     USER *getitem (int no);
  114.     int getnewuid (int gid);
  115.     SHADOW *getshadow (USER *usr);
  116.     USER *select (USER *like,
  117.          int may_add,
  118.          MENU_STATUS&code,
  119.          int &choice);
  120.     void sortbygid (void);
  121.     void sortbyname (void);
  122.     int write (void);
  123.     ~USERS (void);
  124.     /*~PROTOEND~ USERS */
  125. };
  126.  
  127. class GROUP: public ARRAY_OBJ{
  128.     SSTRING name;
  129.     SSTRING passwd;
  130.     int gid;
  131.     SSTRINGS tbmem;    // User member of this group (not their primary group)
  132.     /*~PROTOBEG~ GROUP */
  133. public:
  134.     GROUP (const char *_name,
  135.          const char *_passwd,
  136.          int _gid,
  137.          char **members);
  138.     GROUP (struct group *p);
  139.     GROUP (void);
  140. private:
  141.     int check (USERS&users,
  142.          GROUPS&groups,
  143.          GROUP *realone);
  144. public:
  145.     int edit (USERS&users, GROUPS&groups);
  146.     int getgid (void);
  147.     const char *getname (void);
  148. private:
  149.     void init (const char *_name,
  150.          const char *_passwd,
  151.          int _gid,
  152.          char **members);
  153.     void settbmem (char **members);
  154. public:
  155.     void write (FILE *fout);
  156.     ~GROUP (void);
  157.     /*~PROTOEND~ GROUP */
  158. };
  159.  
  160. class GROUPS: public ARRAY{
  161.     /*~PROTOBEG~ GROUPS */
  162. public:
  163.     GROUPS (void);
  164.     int edit (void);
  165.     const char *getdefault (void);
  166.     GROUP *getfromgid (int gid);
  167.     int getgid (const char *name);
  168.     GROUP *getitem (const char *name);
  169.     GROUP *getitem (int no);
  170.     int getnew (void);
  171.     void sortbyname (void);
  172.     int write (void);
  173.     ~GROUPS (void);
  174.     /*~PROTOEND~ GROUPS */
  175. };
  176.  
  177. #include "userconf.p"
  178.  
  179. #endif
  180.  
  181.